A multi-core processor architecture is implemented by a single processor that plugs directly into a single processor socket, and that single processor will have one or more “processor cores”. Those skilled in the art also refer to processor cores as “CPU cores”. The operating system perceives each processor core as a discrete logical processor. A multi-core processor can perform more work within a given clock cycle because computational work is spread over to the multiple processor cores.
Hardware threads are the one or more computational objects that share the resources of a core but architecturally look like a core from an application program's viewpoint. As noted above, a core is the one or more computational engines in a processor. Hardware multithreading (also known as HyperThreading) is a technology that allows a processor core to act like two or more separate “logical processors” or “computational objects” to the operating system and the application programs that use the processor core. In other words, when performing the multithreading process, a processor core executes, for example, two hardware threads (streams) of instructions sent by the operating system, and the processor core appears to be two separate logical processors to the operating system. The processor core can perform more work during each clock cycle by executing multiple hardware threads. Each hardware thread typically has its own thread state, registers, stack pointer, and program counter.
Current processors with the multithreaded processor cores such as, e.g., the dual-core, dual-threaded MONTECITO ITANIUM processor chip from INTEL CORPORATION, do not allow hardware multithreading to be enabled or disabled dynamically in the multithreaded processor cores without first performing a system reset (i.e., reboot of the operating system and reset of the computing machine hardware). This limitation can cause system availability problems and uptime problems when the system administrator needs to change the behavior of multithreaded processor cores (i.e., when the system administrator needs to temporarily enable or disable the hardware multithreading).
Current hardware multithreading technology also uses an “all or nothing” approach to hardware multithreading. This current approach requires hardware multithreading to be enabled or disable for an entire operating system instance. In other words, all processor cores in an operating system instance are multithreaded, or all processor cores in the operating system instance are not multithreaded. A drawback of this current approach is that not all applications receive a performance benefit when the applications use the multithreaded processor cores. Some applications may be subject to some performance degradation when using multithreaded processor cores. This current approach is problematic when a system administrator wants to run a mix of applications on an operating system instance, and those applications have different needs/requirements with respect to multithreaded processor cores. To solve this problem, the system administrator can provide an additional operating system instance without the multithreaded processor cores and then to match up the applications that require multithreading with the operating system instance with the multithreaded processor cores and to match up the applications that do not require multithreading with the operating system instance without the multithreaded processor cores. However, this solution disadvantageously requires additional memory spaces, software, and costs because two separate operating system instances are installed in the computer system.
Therefore, the current technology is limited in its capabilities and suffers from at least the above constraints and deficiencies.